package ar.com.photo_admin.domain

import java.util.Set;

class EventPhoto {

   
	String name
	
	//Url publica donde se podra visualizar la imagen
	String url
	
	//Url donde se podra visualizar el thumbnail
	String thumbnailUrl
	
	//Url donde se podra visualizar el thumbnail
	String thumbnailMediumUrl
	
	// Ubicacion donde se almacena la imagen en el servidor
	String pathInServer
	
	// Ubicacion donde se almacena el thumbnail en el servidor
	String thumbnailMediumPathInServer
	
	// Ubicacion donde se almacena el thumbnail en el servidor 
	String thumbnailPathInServer
	
	Event event;	
	
	Set photoInAlbums;
	
	long temporalEventNumber;
	
	boolean toBeDeleted;
	
	//static hasMany = [albums:EventAlbum]	
	static hasMany = [photoInAlbums:PhotoInAlbum]
	
	static belongsTo = [Event]
			
	static constraints = {
		name (blank:false) 
		url (blank:false)
		thumbnailUrl(blank:false)
		thumbnailMediumUrl(blank:false)
		event(nullable:true)
		pathInServer(blank:false)
		temporalEventNumber()
		thumbnailPathInServer(blank:false)
		thumbnailMediumPathInServer(blank:false)
	}
	
	static mapping = {		
		event cascade : "save-update"
	
		//albums joinTable:[name:"mm_album_photo", key:'mm_photo_id' ]
	
	}
	
	List getAlbums() {
		return photoInAlbums.collect{it.album}
	}
	
	
	List addToAlbums(EventAlbum album) { 
		PhotoInAlbum.link(this, album) 
		return getAlbums() 		
	}
	
	List removeFromAlbums(EventAlbum album) {		
		PhotoInAlbum.unlink(this, album) 
		return getAlbums() 	
	}
	
	boolean equals(o) {
		if ( ! o instanceof EventPhoto ) {
		   return false
		}
				
		return o.id == this.id
	}
}
